<!DOCTYPE html>
<html lang="zh">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>
    
    函数的声明 - DSRBLOG
    
  </title>
  

  
  
  <link href="atom.xml" rel="alternate" title="DSRBLOG" type="application/atom+xml">
  <link rel="stylesheet" href="asset/css/style.min.css">
  <link rel="stylesheet" href="asset/css/doc.css">
  <script src="asset/app.js"></script>


</head>

<body> <section class="ct-body">
	<div class="container">
		<div class="columns is-variable bd-klmn-columns is-4 is-centered">
			<div class="column is-four-fifths">
				<div class="post-body single-content">
					
					<h1 class="title">
						函数的声明
					</h1>


					<div class="media">
						
						
						<div class="media-content">
							<div class="content">
								<p>
									<span class="date">2022/01/14 01:47 上午</span>
									

									

									<br />
									<span class="tran-tags">Tags:</span>&nbsp;
									
									<a class="tag is-link is-light">#C语言</a>
									

								</p>
							</div>
						</div>

					</div>
				</div>
				<article class="markdown-body single-content">
					<p>函数的声明（<em>函数原型</em>）的一般形式为：</p>
<pre class="line-numbers"><code class="language-c">函数类型 函数名(参数类型1,参数类型2...)
</code></pre>
<pre class="line-numbers"><code class="language-c">函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2...)
</code></pre>
<p><strong>注意：</strong></p>
<ul>
<li>参数名可以省略，参数类型不能缺失</li>
<li>函数的<code>定义</code>和<code>声明</code>不是一回事</li>
</ul>
<h3><a id="%E5%8C%BA%E5%88%AB" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>区别</h3>
<h4><a id="%E5%87%BD%E6%95%B0%E7%9A%84%E5%AE%9A%E4%B9%89%EF%BC%9A" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>函数的定义：</h4>
<ul>
<li>对函数功能的确立，包括指定函数名、函数值类型、形参及其类型、函数体等，它是一个完整的、独立的函数单位</li>
</ul>
<h4><a id="%E5%87%BD%E6%95%B0%E7%9A%84%E5%A3%B0%E6%98%8E%EF%BC%9A" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>函数的声明：</h4>
<ul>
<li>把函数的名称、函数类型（<em>返回值</em>）以及形参的类型、个数和顺序通知编译系统，以便在调用该函数时系统按此进行对照检查</li>
</ul>
<h1><a id="%E5%87%BD%E6%95%B0%E7%9A%84%E8%BF%94%E5%9B%9E%E5%80%BC" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>函数的返回值</h1>
<h3><a id="%E7%B1%BB%E5%9E%8B%E6%A0%87%E8%AF%86%E7%AC%A6" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>类型标识符</h3>
<ul>
<li>函数返回值的数据类型</li>
</ul>
<h3><a id="%E5%87%BD%E6%95%B0%E8%BF%94%E5%9B%9E%E5%80%BC" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>函数返回值</h3>
<ul>
<li><code>return()</code>后面的括号中的值作为函数带回的值（称为函数返回值）</li>
</ul>
<h3><a id="%E8%AF%B4%E6%98%8E" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>说明</h3>
<ul>
<li>
<p>函数的返回值是通过函数中的<code>return()</code>语句获得的</p>
</li>
<li>
<p>一个函数中可以有一个以上的<code>return()</code>语句，执行到哪一个<code>return</code>语句，哪一个语句起作用</p>
</li>
<li>
<p><code>return()</code>的括号可以省略，<code>return z</code>等价于<code>return(z)</code></p>
</li>
<li>
<p><code>return()</code>后面的值可以是一个表达式</p>
</li>
</ul>
<h5><a id="%E4%BE%8B%E5%A6%82" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>例如</h5>
<pre class="line-numbers"><code class="language-c">int max(int x,int y)
{
    return(x&gt;y?x:y);
    //或
    return x&gt;y?x:y;
}
</code></pre>
<ul>
<li>函数的返回值应当属于某一个确定的类型，在定义时指定函数返回值的类型</li>
</ul>
<h5><a id="%E4%BE%8B%E5%A6%82" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>例如</h5>
<pre class="line-numbers"><code class="language-c">int max(float x,float y) //函数值为整形

char letter(char c1,char c2)//函数值为字符型

double min(int x,int y)//函数为双精度型
</code></pre>
<p><strong>注意：</strong> 函数定义位于调用之前，函数不用声明</p>
<pre class="line-numbers"><code class="language-c">#include &lt;stdio.h&gt;

int max(double x, double y)
{
    return x &gt; y ? x : y;
}

int main()
{
    double a, b;
    int c;
    a = 1.2, b = 2.8;
    c = max(a, b);
    return 0;
}
</code></pre>
<p><strong>注意：</strong> 函数定义位于调用之后，函数需要声明</p>
<pre class="line-numbers"><code class="language-c">int main()
{
    double a,b;
    int c;
    int max(double x;double y);//声明函数
    a=1.2,b=2.8;
    c=max(a,b);
    return 0;
}

int max(double x,double y)
{
    return x&gt;y?x:y;
}
</code></pre>
<ul>
<li>
<p>在定义函数时指定的函数类型一般应该和<code>return()</code>语句中的表达式类型一致</p>
</li>
<li>
<p>如果函数值的类型和<code>return()</code>语句中表达式的值不一致，则以函数类型为准。对数值型数据，会自动进行强制类型转换。即函数类型决定返回值的类型。</p>
</li>
<li>
<p>对于不带返回值的函数，应当使用<code>void</code>定义函数为<code>无类型</code>（或称<code>空类型</code>）。此时在函数体内<code>return()</code>为空或没有<code>return()</code></p>
</li>
</ul>

				</article>
				<div class="comments-wrap">
					<div class="share-comments">
						

						

						
					</div>
				</div><!-- end comments wrap -->
			</div>
		</div><!-- end columns -->
	</div><!-- end container -->
</section>  














<script src="asset/prism.js"></script>









</body>

</html>